package com.wing.platform.order.model.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wing.platform.order.model.entity.InventoryJob;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 出/入库作业单记录VO
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class InventoryInoutJobVO {

    /**
     * ID
     */
    private Long id;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime createTime;
    /**
     * 计划提交时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime planCreateTime;

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * 入库作业单编号
     */
    private String code;

    /**
     * 入库计划单编号
     */
    private String planCode;

    /**
     * 产品SKU id
     */
    private Long skuId;

    /**
     * 产品SKU编号
     */
    private String skuCode;

    /**
     * 产品编号
     */
    private String productCode;

    /**
     * 产品类型
     */
    private String productType;



    /**
     * 单位名称
     */
    private String unitName;

    /**
     * 产品单位id
     */
    private Long unitId;

    /**
     * 入库数量
     */
    private Long quantity;

    /**
     * 仓库
     */
    private Long warehouseId;

    /**
     * 仓库名称
     */
    private String warehouseName;


    /**
     * 入库计划编号
     */
    private String storagePlanCode;

    /**
     * 出/入库计划id
     */
    private Long planId;

    /**
     * 签收数量
     */
    private Long signQuantity;

    /**
     * 入库签收人id
     */
    private Long signPeopleId;

    /**
     * 入库签收人名称id
     */
    private String signPeopleName;

    /**
     * 入库签收工位id
     */
    private Long signStationId;

    /**
     * 入库签收工位（入库作业人）
     */
    private String signStationName;

    /**
     * 入库单id
     */
    private Long inventoryInoutId;

    /**
     * 序号
     */
    private Integer no;

    private Integer day;

    private Long productTypeId;

    private Long formSign;

    private List<InventoryJobProductVO> detailList;
    /**
     * 入库作业包装条码数据
     */
    private List<InventoryJobLabelVO> jobLabelList;
    /**
     * 料箱编号
     */
    private String boxCode;
    /**
     * 入库作业说明
     */
    private String remark;
    /**
     * 生产计划工单
     */
    private String productionPlanCode;

    /**
     * 生产台机工位
     */
    private String productionMachine;
    /**
     * 生产负责人
     */
    private String manufactureHeadName;
    /**
     * 送料数量
     */
    private Long feedQuantity;
    /**
     * 入库包装方案
     */
    private String pageScheme;
    /**
     * 入库送料人
     */
    private String feedingPeople;
    /**
     * 入库数（总签收数）
     */
    private Long storageQuantity;
    /**
     * 产品名称
     */
    private String productName;

    /**
     * 发货商
     */
    private String customerName;

    /**
     * 客户联系人
     */
    private String customerConcat;

    /**
     * 联系人电话
     */
    private String customerMoble;

    /**
     * 车牌号
     */
    private String carNo;

    /**
     * 物流单号
     */
    private String expressCode;

    /**
     * 物流企业id
     */
    private Long companyId;

    /**
     * 运输方式
     */
    private InventoryJob.TransportType transportType;

    /**
     * 运输方式描述
     */
    @TableField(exist = false)
    private String transportTypeDesc;

    public String getTransportTypeDesc() {
        return transportType == null ? null : transportType.getDesc();
    }


    /**
     * 目标仓库
     */
    private Long inWarehouseId;
    /**
     * 目标仓库名称
     */
    private String inWarehouseName;
    /**
     * 当前登录人
     */
    private String loginUsername;
    /**
     * 企业id
     */
    private Long enterpriseId;
    /**
     * 发货时间
     */
    private String sendTime;
    /**
     * 物流公司
     */
    private String logisticsCompany;
    /**
     * 发货人联系电话
     */
    private String consignerMobel;
    /**
     * 发货时间
     */
    private String sendTimeStr;
    /**
     * 企业端出库仓库名称
     */
    private String outWarehouseName;
    /**
     * 企业编号
     */
    private String enterpriseCode;
    /**
     * 省
     */
    private Long province;
    /**
     * 市
     */
    private Long city;
}
